package com.vinci.task.controller;

import com.vinci.task.entity.TbSysDictionaries;
import com.vinci.task.entity.TbTaskInfo;
import com.vinci.task.service.TbTaskInfoService;
import com.vinci.util.Constants;
import com.vinci.util.JsonObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.util.List;


/**
 * <p>
 * 任务表 前端控制器
 * </p>
 *
 * @author 张先生
 * @since 2021-12-11
 */
@RestController
@RequestMapping("/task")
@Slf4j
@CrossOrigin
public class TbTaskInfoController {

    @Autowired
    private TbTaskInfoService tbTaskInfoService;

    /**
     * 根据id查询详情信息
     * @param taskId
     * @return
     */
    @PostMapping("/getById")
    public Object getById(String taskId){
        //创建返回对象信息
        JsonObject object = new JsonObject();

        if(taskId == null){
            object.setCode("A0400");
            object.setMsg("用户请求参数错误");
        }else {
            List<TbTaskInfo> pageInfo = tbTaskInfoService.getById(taskId);
            object.setCode(Constants.OK_COOE);
            object.setMsg("成功");
            object.setCount(pageInfo.size());
            object.setData(pageInfo);
        }
        return object;
    }
    /**
     * 查询任务表信息
     * @param task
     * @return
     */
    @PostMapping("/selectTbTaskInfo")
    public JsonObject selectTbTaskInfo(TbTaskInfo task){

        List<TbTaskInfo> tbTaskInfos = tbTaskInfoService.selectTbTaskInfo(task);
        JsonObject jsonObject= new JsonObject();
        jsonObject.setCode(Constants.OK_COOE);
        jsonObject.setMsg("成功");
        jsonObject.setCount(tbTaskInfos.size());
        jsonObject.setData(tbTaskInfos);

        return jsonObject;
    }

    /**
     * 添加任务表信息
     * @param task
     * @return
     */
    @PostMapping("/insertTbTaskInfo")
    public JsonObject insertTbTaskInfo(TbTaskInfo task,HttpSession session){

        JsonObject jsonObject = new JsonObject();

        if(task == null){
            jsonObject.setCode("A0400");
            jsonObject.setMsg("用户请求参数错误");
        }else {
            tbTaskInfoService.insertTbTaskInfo(task,session);
            jsonObject.setCode("1");
            jsonObject.setMsg("成功");
        }

        return jsonObject;
    }

    /**
     * 修改任务表信息
     * @param task
     * @return
     */
    @PostMapping("/updateTbTaskInfo")
    public JsonObject updateTbTaskInfo(TbTaskInfo task){

        JsonObject jsonObject = new JsonObject();

        if(task == null){
            jsonObject.setCode("A0400");
            jsonObject.setMsg("用户请求参数错误");
        }else {
            tbTaskInfoService.updateTbTaskInfo(task);
            jsonObject.setCode("1");
            jsonObject.setMsg("成功");
        }

        return jsonObject;
    }

    /**
     * 删除任务表信息
     * @param taskId
     * @return
     */
    @PostMapping("/deleteTbTaskInfo")
    public JsonObject deleteTbTaskInfo(String taskId){

        JsonObject jsonObject = new JsonObject();

        if(taskId == null){
            jsonObject.setCode("A0400");
            jsonObject.setMsg("用户请求参数错误");
        }else {
            tbTaskInfoService.deleteTbTaskInfo(taskId);
            jsonObject.setCode("1");
            jsonObject.setMsg("成功");
        }
        
        return jsonObject;
    }

    /**
     * 查询任务表类型
     * @return
     */
    @GetMapping("/selectTaskCategory")
    public JsonObject selectTaskCategory(){

        JsonObject jsonObject = new JsonObject();

        List<TbSysDictionaries> tbSysDictionaries = tbTaskInfoService.selectCategory();

        jsonObject.setCode(Constants.OK_COOE);
        jsonObject.setMsg("成功");
        jsonObject.setCount(tbSysDictionaries.size());
        jsonObject.setData(tbSysDictionaries);

        return jsonObject;
    }

    /**
     * 认领任务
     * @param task
     * @param session
     * @return
     */
    @PostMapping("/updateClaim")
    public JsonObject updateClaim(TbTaskInfo task,HttpSession session){

        JsonObject jsonObject = new JsonObject();
        if(task == null){
            jsonObject.setCode("A0400");
            jsonObject.setMsg("用户请求参数错误");
        }else {
            jsonObject.setCode("1");
            jsonObject.setMsg("成功");
            tbTaskInfoService.updateClaim(task,session);
        }

        return jsonObject;
    }


    @PostMapping("/updateDesignee")
    public JsonObject updateDesignee(TbTaskInfo task){

        JsonObject jsonObject = new JsonObject();
        if(task == null){
            jsonObject.setCode("A0400");
            jsonObject.setMsg("用户请求参数错误");
        }else {
            jsonObject.setCode("1");
            jsonObject.setMsg("成功");
            tbTaskInfoService.updateDesignee(task);
        }

        return jsonObject;
    }

}



